#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "werr.h"
#include "wimp.h"
#include "dbox.h"
#include "narc.h"


DISPLAY display_tab[N_DISPLAY_TAB];

MNEM_TAB fieldnames[] = {
	"",         0,
	"Date",     1,
	"Category", 2,
	"Address",  3,
	"Title",    4,
	"Source",   5,
	"Length",   6,
	"Icon2",    7,
	"",         8,
	"Icon",     9,
	"Unread",  10,
	"Reply",   11,
	"Count",   12,
	"Author",  13,
	"Attach",  14,
	NULL,       -1,
};


int decode_display(char *fname)
/*****************************/
{
	int  display;
	int  level;
	int  i;
	DISPLAY *d;
	DISPLAY_LEVEL *dl;
	FILE *f_out;
	FILE *f;

	f = fopen_werr_pluto("Choices.Display","r");
	if(f==NULL)
		return(1);

	fread(display_tab,1,sizeof(display_tab),f);
	fclose(f);

	f_out = fopen(fname,"w");
	if(f_out == NULL)
	{
		return(2);
	}


	for(display=0; display<N_DISPLAY_TAB; display++)
	{
		d = &display_tab[display];
		if(d->name[0] == 0)
			break;

		fprintf(f_out,"%s width %d warn %d\n",d->name,d->window_width,d->warn);

		for(level=0; level<N_SORT_LEVELS; level++)
		{
			dl = &d->level[level];
			if(dl->sort_field == 0)
				break;

			fprintf(f_out,"\t%s\t",fieldnames[dl->sort_field].mnem);
			for(i=0; i<(3*N_SORT_DISPLAY_ITEMS); i+=3)
			{
				if(dl->display_items[i] == 0)
					break;

				if(i>0)
					fprintf(f_out,"  ");

				fprintf(f_out,"%s %d %d",fieldnames[dl->display_items[i]].mnem,
						dl->display_items[i+1],dl->display_items[i+2]);
			}
			fputc('\n',f_out);
		}
		fputc('\n',f_out);
	}
	fclose(f_out);
	return(0);
}   /* end of decode_display */



int encode_display(char *fname)
/*****************************/
{
	FILE *f;
	int  display;
	int  level;
	int  item;
	char buf[256];

	werr(0,"This is an error");

	f = fopen(fname,"r");
	if(f == NULL)
		return(1);

	memset(display_tab,0,sizeof(display_tab));

	display = 0;
	while(!feof(f))
	{
		if(fgets(buf,sizeof(buf),f) == NULL)
			break;


	}
}   /* end of encode_display */



int main(int argc, char **argv)
/*****************************/
{
	if(argc <= 1)
		exit(0);

	if(strcmp(argv[1],"d_display")==0)
	{
		decode_display(argv[2]);
	}
	else if(strcmp(argv[1],"e_display")==0)
	{
		encode_display(argv[2]);
	}
}
